package dados;

public class ArvoreServicoTipoServico {
	private String codTipoServico;
	private ArvoreServicoTipoServico anterior;
	private ArvoreServicoTipoServico posterior;
	private ListaServicoPk lista;
	
	public ArvoreServicoTipoServico(String codigo, 
			ArvoreServicoTipoServico anterior, 
			ArvoreServicoTipoServico posterior, 
			ListaServicoPk lista) {
		this.codTipoServico = codigo;
		this.anterior = anterior;
		this.posterior = posterior;
		this.lista = lista;
	}
	public ArvoreServicoTipoServico getAnterior() {
		return anterior;
	}
	public void setAnterior(ArvoreServicoTipoServico anterior) {
		this.anterior = anterior;
	}
	public String getCodTipoServico() {
		return codTipoServico;
	}
	public void setCodTipoServico(String codigo) {
		this.codTipoServico = codigo;
	}
	public ListaServicoPk getLista() {
		return lista;
	}
	public void setLista(ListaServicoPk lista) {
		this.lista = lista;
	}
	public ArvoreServicoTipoServico getPosterior() {
		return posterior;
	}
	public void setPosterior(ArvoreServicoTipoServico posterior) {
		this.posterior = posterior;
	}
	public void addLista(int numAtendimento, int seqAtendimento, int posicao) {
		int valor = numAtendimento*1000+seqAtendimento;
		if (lista.getValorPk()>valor){
			lista=new ListaServicoPk(posicao,numAtendimento,seqAtendimento,lista);
		} else if (lista.getValorPk()<valor){
			lista.add(numAtendimento,seqAtendimento,posicao);
		}
		
	}
	public void adicionarArvore(ArvoreServicoTipoServico anterior2, String codTipoServico2, int numAtendimento, int seqAtendimento, int posicao) {
		if (anterior2.getCodTipoServico().equals(codTipoServico2)){
			anterior2.addLista(numAtendimento,seqAtendimento,posicao);
		} else if (anterior2.getCodTipoServico().compareTo(codTipoServico2)>0){
			if (anterior2.getAnterior()==null){
				anterior2.setAnterior(new ArvoreServicoTipoServico(codTipoServico2,null,null,
						new ListaServicoPk(posicao,numAtendimento,seqAtendimento,null)));
			} else {
				anterior2.adicionarArvore(anterior2.getAnterior(),codTipoServico2,numAtendimento,seqAtendimento,posicao);
			}			
		} else {
			if (anterior2.getPosterior()==null){
				anterior2.setPosterior(new ArvoreServicoTipoServico(codTipoServico2,null,null,
						new ListaServicoPk(posicao,numAtendimento,seqAtendimento,null)));
			} else {
				anterior2.adicionarArvore(anterior2.getPosterior(),codTipoServico2,numAtendimento,seqAtendimento,posicao);
			}
		}
		
	} 
}
